﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace AcademiaInteligenteData.DAL
{
    class DaoPlanoExercicio : DaoConnection
    {
        public List<PlanoExercicio> SelecionarPlanoExercicioPorAcademiaCliente(int idAcademia, int idCliente)
        {
            string selecionaPlanoExercicio = "ai_sp_selecionarPlanoExercicioCliente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_academia", idAcademia));
            parametros.Add(new SqlParameter("@id_cliente", idCliente));
            DataSet reader = Selecionar(selecionaPlanoExercicio, true, parametros);

            List<PlanoExercicio> planoExercicios = new List<PlanoExercicio>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                PlanoExercicio planoExercicio = new PlanoExercicio();
                planoExercicio.id_academia = idAcademia;
                planoExercicio.Exercicio = new Exercicio() { id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_exercicio"]), descricao = Convert.ToString(reader.Tables[0].Rows[i]["exercicio"]) };
                planoExercicio.Modalidade = new Modalidade() { Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_modalidade"]), Descricao = Convert.ToString(reader.Tables[0].Rows[i]["modalidade"]) };
                planoExercicio.Maquina = new Maquina() { id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_maquina"]), descricao = Convert.ToString(reader.Tables[0].Rows[i]["maquina"]) };
                planoExercicio.serie = Convert.ToInt32(reader.Tables[0].Rows[i]["serie"]);
                planoExercicio.quantidade = Convert.ToInt32(reader.Tables[0].Rows[i]["quantidade"]);
                planoExercicio.tempo = Convert.ToDouble(reader.Tables[0].Rows[i]["tempo"]);
                planoExercicio.id_cliente = idCliente;
                planoExercicios.Add(planoExercicio);
            }
            return planoExercicios;
        }
        public void InserirPlanoExercicio(PlanoExercicio planoExercicio)
        {
            string insertPlanoExercicio = "ai_sp_inserirPlanoExercicioCliente";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", planoExercicio.id));
            parametros[0].Direction = System.Data.ParameterDirection.InputOutput;
            parametros.Add(new SqlParameter("@id_academia", planoExercicio.id_academia));
            parametros.Add(new SqlParameter("@id_cliente", planoExercicio.id_cliente));
            parametros.Add(new SqlParameter("@id_modalidade", planoExercicio.id_modalidade));
            parametros.Add(new SqlParameter("@id_exercicio", planoExercicio.id_exercicio));
            parametros.Add(new SqlParameter("@id_maquina", planoExercicio.id_maquina));
            parametros.Add(new SqlParameter("@serie", planoExercicio.serie));
            parametros.Add(new SqlParameter("@quantidade", planoExercicio.quantidade));
            parametros.Add(new SqlParameter("@tempo", planoExercicio.tempo));
            Executar(insertPlanoExercicio, true, parametros);
            planoExercicio.id = Convert.ToInt32(parametros[0].Value);
        }
        public void AlterarPlanoExercicio(PlanoExercicio planoExercicio)
        {
            string alterarPlanoExercicio = "ai_sp_alterarPlanoExercicioCliente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", planoExercicio.id));
            parametros.Add(new SqlParameter("@id_modalidade", planoExercicio.id_modalidade));
            parametros.Add(new SqlParameter("@id_exercicio", planoExercicio.id_exercicio));
            parametros.Add(new SqlParameter("@id_maquina", planoExercicio.id_maquina));
            parametros.Add(new SqlParameter("@serie", planoExercicio.serie));
            parametros.Add(new SqlParameter("@quantidade", planoExercicio.quantidade));
            parametros.Add(new SqlParameter("@tempo", planoExercicio.tempo));
            Executar(alterarPlanoExercicio, true, parametros);
        }
        public void ExcluirPlanoExercicioPorID(int id)
        {
            string excluirPlanoExercicio = "ai_sp_excluirPlanoExercicioCliente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            Executar(excluirPlanoExercicio, true, parametros);
        }
        public PlanoExercicio SelecionarPlanoExercicioPorID(int id)
        {
            string selecionaPlanoExercicio = "ai_sp_selecionarPlanoExercicio";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            DataSet reader = Selecionar(selecionaPlanoExercicio, true, parametros);
            int i = 0;
            PlanoExercicio planoExercicio = new PlanoExercicio();
            planoExercicio.id_academia = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]); ;
            planoExercicio.Exercicio = new Exercicio() { id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_exercicio"])};
            planoExercicio.Modalidade = new Modalidade() { Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_modalidade"]) };
            planoExercicio.Maquina = new Maquina() { id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_maquina"]) };
            planoExercicio.serie = Convert.ToInt32(reader.Tables[0].Rows[i]["serie"]);
            planoExercicio.quantidade = Convert.ToInt32(reader.Tables[0].Rows[i]["quantidade"]);
            planoExercicio.tempo = Convert.ToDouble(reader.Tables[0].Rows[i]["tempo"]);
            planoExercicio.id_cliente = Convert.ToInt32(reader.Tables[0].Rows[i]["id_cliente"]);
            planoExercicio.id= id;
            return planoExercicio;
        }
    }
}
